Many database systems include storage engines that were designed based on the assumption that data is stored on a disk and paged in and out of main memory when required for processing. As a result of the growth in main memory capacity, it may be possible to store many databases entirely in memory. Furthermore, there is a trend toward more processors (i.e., central processing unit (CPU) cores) in computer systems.
Existing in-memory storage engines are unlikely to achieve maximal performance on current and future servers (e.g., multi-core machines). Existing in-memory storage engines use one or more frequently accessed data structures and protect shared data by locks and latches. This may limit the level of concurrency and the total throughput of the system (e.g., the locks and latches may become bottlenecks).